package com.project.service;

import com.github.pagehelper.PageInfo;
import com.project.bean.StaffBean;

import java.util.List;

public interface IStaffService {
    /**
     * 根据条件模糊动态分页查询员工
     * 默认状态下查询全部员工
     * @param pageNo 页码
     * @param name 员工名称
     * @param expertise 专长
     * @param state 状态
     * @param sort 排序规则（可以判断null）
     * @return 分页对象
     */
    public PageInfo<StaffBean> findByItem(
            Integer pageNo,String name, String expertise,
            String state, String sort);

    /**
     * 添加员工
     * @param staffBean 员工对象（包含姓名、电话、专长、工资、生日、头像）
     */
    public void add(StaffBean staffBean);

    /**
     * 员工离职，将员工的状态修改为离职。
     * 并将他正在进行的项目，完成时间修改为当前时间
     * @param id 员工id
     */
    public void updateState(Integer id);

    /**
     * 先根据id查询该用户，用户存在修改用户的电话和工资
     * @param id 用户id
     * @param phone 电话
     * @param salary 工资
     */
    public void update(Integer id,
                       String phone,Integer salary);

    /**
     * 根据id查询用户，同时查询该员工参与的所有项目的名称
     * @param id 员工id
     * @return 员工信息和参与项目的名称 //参与时间和完成项目时间（进度表）
     */
    public StaffBean findByIdProject(Integer id);

    /**
     * 根据id查询用户详情
     * @param id 员工id
     * @return 员工信息
     */
    public StaffBean findById(Integer id);

    /**
     * 根据条件模糊动态查询不在指定项目的员工信息集合。
     * 项目编号为固定条件，员工姓名和专长为动态条件
     * @param name 员工姓名
     * @param expertise 专长
     * @return 员工集合
     */
    public List<StaffBean> findByNoItem(
            String name,String expertise,Integer projId);



}
